home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Games of Daze
/
Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso
/
x2ftp
/
msdos
/
source
/
swaga-c
/
copymove.swg
/
0017_An OOP FILECOPY.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
1993-08-17
|
2KB
|
75 lines
PROGRAM FileCopyDemo; { FILECOPY.PAS }
USES Crt;
TYPE
Action = (Input, Output);
DataBlk = array[1..512] of byte;
FileObj = OBJECT
fp : FILE;
CONSTRUCTOR OpenFile(FileName: string;
FileAction: Action);
PROCEDURE ReadBlock(VAR fb: DataBlk;
VAR Size: integer);
PROCEDURE WriteBlock(fb: DataBlk;
size: integer);
DESTRUCTOR CloseFile;
END;
CONSTRUCTOR FileObj.OpenFile;
BEGIN
Assign(fp, FileName);
CASE FileAction of
Input: BEGIN
Reset(fp, 1);
IF IOResult <> 0 THEN
BEGIN
WriteLn(FileName, ' not found!');
Halt(1);
END;
WriteLn(FileName,' opened for read ... ');
END;
Output: BEGIN
Rewrite(fp, 1);
WriteLn(FileName,' opened for write ... ');
END;
END; {CASE}
END;
DESTRUCTOR FileObj.CloseFile;
BEGIN
Close(fp);
WriteLn('File closed ...');
END;
PROCEDURE FileObj.ReadBlock;
BEGIN
BlockRead(fp, fb, SizeOf(fb), Size);
WriteLn('Reading ', Size, ' bytes ... ');
END;
PROCEDURE FileObj.WriteBlock;
BEGIN
BlockWrite(fp, fb, Size);
WriteLn('Writing ', Size, ' bytes ... ');
END;
VAR
InFile, OutFile : FileObj;
Data: DataBlk;
Size: integer;
BEGIN
ClrScr;
InFile.OpenFile('FILECOPY.PAS', Input);
OutFile.OpenFile('FILECOPY.CPY', Output);
REPEAT
InFile.ReadBlock(Data, Size);
OutFile.WriteBlock(Data, Size);
UNTIL Size <> SizeOf(DataBlk);
InFile.CloseFile;
OutFile.CloseFile;
Write('Press Enter to quit ... ');
ReadLn;
END.